#define _CRT_SECURE_NO_WARNINGS 2

//
//#include<stdio.h>
//#include<string.h>
//int main() {
//	char str[] = "abcdefghjkl";
//	memset(str, '-', 6);
//	int arr[10];
//	memset(arr, 'a', 4);
//	puts(str);
//	return 0;
//}
//
//char repeatedCharacter(char* s) {
//    int a = 0;
//    for (int i = 0; s[i]; i++) {
//        int pos = s[i] - 'a';
//        if (a & (1 << pos)) {
//            return s[i];
//        }
//        a = a | (1 << pos);
//    }
//    return;
//
//}
//
//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//
//int isPalindrome(int x) {
//    char str[33];
//    itoa(x, str, 10);
//    int len = strlen(str);
//    char* left = str;
//    char* right = str + len - 1;
//    while (left < right) {
//        if (*left == *right) {
//            return 0;
//        }
//        left++;
//        right--;
//    }
//    return 1;
//}
//
//int main() {
//    int x = 0;
//    scanf("%d", &x);
//    if (isPalindrome(x)) {
//        printf("yes\n");
//    }
//    else {
//        printf("no\n");
//    }
//    return 0;
//}


#include<stdio.h>
#include<string.h>

int my_strcmp(const char* str1, const char* str2) {
	for (int i = 0; i < 8; i++) {
		if (*(str1 + i) != *(str2 + i)) {
			return 1;
		}
	}
	return 0;
}

int main() {
	char str[800][8];
	int n = 0;
	int arr[100] = { 1 };
	scanf("%d", &n);
	for (int i = 0; i < n * 8; i++) {
		for (int j = 0; j < 8; j++) {
			scanf("%c", &str[i][j]);
		}
	}

	int num = 1;
	while (num < n && n>1) {
		int total = 1;
		int m = 8 * num;
		int  count = 0;
		for (int i = 0; i < 8 * num; i++) {
			if (!my_strcmp(str[i], str[m + i])) {
				count++;
			}
			if ((count % 8 == 0) && count) {
				total++;
			}
			if (!((i + 1) % 8)) {
				m -= 8;
				count = 0;
			}
		}
		arr[num++] = total;

	}
	for (int i = 0; i < n; i++) {
		printf("%d ", arr[i]);
	}
	return 0;
}
/* 
********
********
********
********
********
********
********
********
********
********
********
********
********
********
********
********
*/
//#include<stdio.h>
//#include<string.h>
//
//int main() {
//	int  str[3][2];
//	printf("%d", '\n');
//	char str1[3];
//	//scanf("%s", str1);
//	/*for (int i = 0; i < 3; i++) {
//		for (int j = 0; j < 2; j++) {
//			scanf("%d", &str[i][j]);
//		}
//	}*/
//	//printf("%c", *(str[0] + 1));
//	return 0;
//}